package com.upbos.upm.dict;

import com.upbos.core.ret.RetData;
import com.upbos.data.core.Pagination;
import com.upbos.upm.entity.Dict;
import com.upbos.upm.entity.DictItem;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

import static com.upbos.core.ret.RetData.success;

/**
 * <b>Application name：</b> DictController.java <br>
 * <b>Application describing: 配置数据字典</b> <br>
 * <b>Copyright：</b> Copyright &copy; 2015-2020 yideb.com 版权所有<br>
 * <b>Company：</b> yideb.com <br>
 * <b>Date：</b> 2019年05月11日 17:09 <br>
 * <b>author：</b> <a href="mailto:wjzchina2008@126.com"> Jason </a>
 * <b>version：</b>V5.0.0
 */
@RestController
@RequestMapping("upm/dict")
public class DictController {

    /**
     * 数据字典服务类
     */
    @Resource
    private DictService dictService;

    /**
     * 查询字典列表
     *
     * @param pageNo     当前页
     * @param pageSize   每页条数
     * @param categoryId 所属分类id
     * @param name       查询关键词，可以是参数名称或参数键
     * @return
     */
    @PostMapping("listDict")
    public RetData listDict(Integer pageNo, Integer pageSize, Long categoryId, String name) {
        Pagination p = dictService.listDict(pageNo, pageSize, categoryId, name);
        return success(p);
    }

    /**
     * 保存字典
     *
     * @param dict 字典
     */
    @PostMapping("saveDict")
    public RetData saveDict(Dict dict) {
        return dictService.saveDict(dict);
    }

    /**
     * 删除字典
     *
     * @param dict
     */
    @PostMapping("deleteDict")
    public void deleteDict(Dict dict) {
        dictService.deleteDict(dict);
    }

    /**
     * 查询字典项列表
     *
     * @param dictId 字典Id
     * @return 字典项列表
     */
    @PostMapping("listDictItem")
    public RetData listDictItem(Long dictId) {
        return success(dictService.listDictItem(dictId));
    }

    /**
     * 保存字典项
     *
     * @param dictItems 字典项列表
     */
    @PostMapping("saveDictItem")
    public void saveDictItem(@RequestBody List<DictItem> dictItems) {
        dictService.saveDictItem(dictItems);

    }

    /**
     * 获取字典项
     *
     * @param key 字典标识
     * @return
     */
    @PostMapping("getDict")
    public RetData getDict(String key) {
        return success(dictService.listDictItemByDictKey(key));
    }
}